程序的结构

2015-12-31

程序的结构

要用到的c代码,文件名就是main.

#include <stdio.h>
#include <stdlib.h>

int i =0;

int main(){
    int j =0;
    printf("Hello,World\n" );
    char *x=(char *)malloc(sizeof(char)*100);
    while(1);
    return 0;
}

首先看看进程的结构,有code,data和bss 这3大部分.

changy@K29:~/Desktop/linux$ size main
   text    data     bss     dec     hex filename
   1303     568       8    1879     757 main

如果删除int j =0;这行代码

changy@K29:~/Desktop/linux$ size main
   text    data     bss     dec     hex filename
   1287     568       8    1863     747 main

text部分有改变(按理来说应该是减少4个字节,怎么变成16个字节了..... 怪异)

查看运行时该进程的PID, 10459

changy@K29:~/Desktop/linux$ ps aux|grep ./main
changy   10459 99.4  0.0   4332   684 pts/0    R+   15:26   0:13 ./main
changy   10529  0.0  0.0  15944  2268 pts/3    S+   15:26   0:00 grep --color=auto ./main

更进一步的查看该进程的信息, ID含义是起始地址和结束地址,权限,偏移地址,主次设备(驱动),inode(文件). 可以看到该进程使用了2个c的库文件. 还有一些定义不太清楚,后面应该还会遇到

changy@K29:~/Desktop/linux$ cat /proc/10459/maps
00400000-00401000 r-xp 00000000 08:17 9702313                        /home/changy/Desktop/linux/main
00600000-00601000 r--p 00000000 08:17 9702313                        /home/changy/Desktop/linux/main
00601000-00602000 rw-p 00001000 08:17 9702313                        /home/changy/Desktop/linux/main
00c29000-00c4a000 rw-p 00000000 00:00 0                              [heap]
7f8785d6e000-7f8785f29000 r-xp 00000000 08:02 3936432                /lib/x86_64-linux-gnu/libc-2.19.so
7f8785f29000-7f8786128000 ---p 001bb000 08:02 3936432                /lib/x86_64-linux-gnu/libc-2.19.so
7f8786128000-7f878612c000 r--p 001ba000 08:02 3936432                /lib/x86_64-linux-gnu/libc-2.19.so
7f878612c000-7f878612e000 rw-p 001be000 08:02 3936432                /lib/x86_64-linux-gnu/libc-2.19.so
7f878612e000-7f8786133000 rw-p 00000000 00:00 0 
7f8786133000-7f8786156000 r-xp 00000000 08:02 3936408                /lib/x86_64-linux-gnu/ld-2.19.so
7f8786335000-7f8786338000 rw-p 00000000 00:00 0 
7f8786352000-7f8786355000 rw-p 00000000 00:00 0 
7f8786355000-7f8786356000 r--p 00022000 08:02 3936408                /lib/x86_64-linux-gnu/ld-2.19.so
7f8786356000-7f8786357000 rw-p 00023000 08:02 3936408                /lib/x86_64-linux-gnu/ld-2.19.so
7f8786357000-7f8786358000 rw-p 00000000 00:00 0 
7ffcf8a1f000-7ffcf8a40000 rw-p 00000000 00:00 0                      [stack]
7ffcf8bde000-7ffcf8be0000 r--p 00000000 00:00 0                      [vvar]
7ffcf8be0000-7ffcf8be2000 r-xp 00000000 00:00 0                      [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0              [vsyscall]

Category: OS Tagged: system data bss

comments


Page 1 of 1